#include "tools.h"
#include "struct.h"
// 任意键
void anykey_continue(void)
{
	stdin->_IO_read_ptr = stdin->_IO_read_end;
	puts("任意键继续...");
	getch();
}

// 提示 
void show_msg(const char* msg,float sec)
{
	printf("%s",msg);
	fflush(stdout);
	usleep(sec*1000000);
}

// 读取学生信息
void load_in_stu(void)
{
	count_stu=0;
	stu = calloc(STU_MAX,sizeof(Student));
	FILE* frp_stu = fopen("student.txt","r");
	if(NULL == frp_stu)
	{
		perror("fopen");
		return;
	}
	for(int i=0;i<STU_MAX;i++)
	{
		fscanf(frp_stu,"%s %s %c %c %d %lf %lf %lf %d\n",stu[i].name,stu[i].pw,&stu[i].sex,&stu[i].state,&stu[i].id,&stu[i].chn,&stu[i].math,&stu[i].eng,&stu[i].lock);
		if(stu[i].state=='1') count_stu++;
	}
	fclose(frp_stu);
}

// 保存在校学生信息
void save_in_stu(void)
{
	FILE* fwp_stu = fopen("student.txt","w+");
	if(NULL == fwp_stu)
	{
		perror("fopen");
		return;
	}
	for(int i=0;i<STU_MAX;i++)
	{
		if(!stu[i].sex) break;
		if(stu[i].state=='2') continue;
		fprintf(fwp_stu,"%s %s %c %c %d %lf %lf %lf %d\n",stu[i].name,stu[i].pw,stu[i].sex,stu[i].state,stu[i].id,stu[i].chn,stu[i].math,stu[i].eng,stu[i].lock);
	}
	fclose(fwp_stu);
}

// 读取退校学生信息
void load_out_stu(void)
{
	FILE* frp_out_stu = fopen("out_student.txt","r");
	if(NULL == frp_out_stu)
	{
		perror("fopen");
		return;
	}
	for(int i=count_stu;i<STU_MAX;i++)
	{
		fscanf(frp_out_stu,"%s %s %c %c %d %lf %lf %lf %d\n",stu[i].name,stu[i].pw,&stu[i].sex,&stu[i].state,&stu[i].id,&stu[i].chn,&stu[i].math,&stu[i].eng,&stu[i].lock);
		if(stu[i].state=='2') count_stu++;
		if(!stu[i].sex) break;
	}
	fclose(frp_out_stu);
}

// 保存退校学生信息
void save_out_stu(void)
{
	FILE* fwp_out_stu = fopen("out_student.txt","w+");
	if(NULL == fwp_out_stu)
	{
		perror("fopen");
		return;
	}
	for(int i=0;i<STU_MAX;i++)
	{
		if(stu[i].sex==0) break;
		if(stu[i].state=='1') continue;
		fprintf(fwp_out_stu,"%s %s %c %c %d %lf %lf %lf %d\n",stu[i].name,stu[i].pw,stu[i].sex,stu[i].state,stu[i].id,stu[i].chn,stu[i].math,stu[i].eng,stu[i].lock);
	}
	fclose(fwp_out_stu);
	free(stu);
}

// 读取老师信息
void load_tch(void)
{
	count_tea=0;
	FILE* frp_tch = fopen("teacher.txt","r");
	if(NULL == frp_tch)
	{
		perror("fopen");
		return;
	}
	for(int i=0;i<TEA_MAX;i++)
	{
		fscanf(frp_tch,"%s %s %c %c %d %d\n",tea[i].name,tea[i].pw,&tea[i].sex,&tea[i].state,&tea[i].id,&tea[i].lock);
		if(tea[i].sex!=0) count_tea++;
	}
	fclose(frp_tch);
}

// 保存老师信息
void save_tch(void)
{
	FILE* fwp_tch = fopen("teacher.txt","w+");
	if(NULL == fwp_tch)
	{
		perror("fopen");
		return;
	}
	for(int i=0;i<TEA_MAX;i++)
	{
		if(tea[i].sex==0) break;
		fprintf(fwp_tch,"%s %s %c %c %d %d\n",tea[i].name,tea[i].pw,tea[i].sex,tea[i].state,tea[i].id,tea[i].lock);
	}
	fclose(fwp_tch);
}

// 密码加密函数
char *get_pw(char *str)
{
	int i=0;
	stdin->_IO_read_ptr = stdin->_IO_read_end;	// 清空缓存区
	for(;;)
	{
		str[i]=getch();		// 获取键值
        if(str[i]=='\n')	// 获取空格退出
            break;
        if(str[i]==127)		// 127为删除符
        {
            if(i==0)		// 当字符串中没有字符收到删除符，震铃提示
            {
                printf("\a");
                continue;
            }
            i--;
			str[i]='\0';
			printf("\b \b"); 	// 显示去掉一个×
			continue;
        }
		if(str[i]>0 && str[i]<127 && i<16)  // 如果获取合法键值且密码没超过16位 则接着输入
		{
		    i++;
		    printf("*");
		}
	}
    str[i]='\0';	// 字符串结尾 '\0'
    return str;
}







